]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
Bluetooth: fix updating the device list
authorGiovanni Campagna <gcampagna@src.gnome.org>
Tue, 15 Mar 2011 20:22:57 +0000 (21:22 +0100)
committerGiovanni Campagna <gcampagna@src.gnome.org>
Wed, 16 Mar 2011 14:29:37 +0000 (15:29 +0100)
Inside the inner loop, use the inner iterator, not that of the outer
loop. At the same time, refactor the code to rely less on private
properties appended to foreign objects.

https://bugzilla.gnome.org/show_bug.cgi?id=644858

js/ui/status/bluetooth.js

index 78859075cec5fee8c0905ced0dd83d221f26d263..092cd1ae8b392a9cae5286b7e15adff2d06e51a3 100644 (file)
@@ -136,6 +136,7 @@ Indicator.prototype = {
     _updateDevices: function() {
         let devices = this._applet.get_devices();
 
+        let newlist = [ ];
         for (let i = 0; i < this._deviceItems.length; i++) {
             let item = this._deviceItems[i];
             let destroy = true;
@@ -143,26 +144,20 @@ Indicator.prototype = {
                 // we need to deep compare because BluetoothSimpleDevice is a boxed type
                 // (but we take advantage of that, because _skip will disappear the next
                 // time get_devices() is called)
-                if (this._deviceCompare(item._device, devices[i])) {
-                    item.label.text = devices[i].alias;
-                    devices[i]._skip = true;
+                if (this._deviceCompare(item._device, devices[j])) {
+                    item.label.text = devices[j].alias;
+                    devices[j]._skip = true;
                     destroy = false;
+                    break;
                 }
             }
-            if (destroy) {
+            if (destroy)
                 item.destroy();
-                item._destroyed = true;
-            }
-        }
-
-        let newlist = [ ];
-        for (let i = 0; i < this._deviceItems.length; i++) {
-            let item = this._deviceItems[i];
-            if (!item._destroyed)
+            else
                 newlist.push(item);
         }
-        this._deviceItems = newlist;
 
+        this._deviceItems = newlist;
         this._hasDevices = newlist.length > 0;
         for (let i = 0; i < devices.length; i++) {
             let d = devices[i];